<?php namespace Admin\Model;
use Hdphp\Model\Model;
//商品分类 模型
class Category extends Model{
//	指定表名
	protected $table = 'category';
//	自动验证
	protected $validate = array(
	array('cname','required','分类名称不能为空哦~~',3,3),
	array('type_tid','required','请选择所属类型',3,3),
	array('sort','required','请填写排序',3,3),
	array('sort','num:0,65535','分类排序必须为数字！',3,3)
	);
//	添加分类
	public function store(){
//		自动验证
		if(!$this->create()) return false;
		$this->add();
		return true;
	}
//	修改分类
	public function edit($cid){
		if(!$this->create()) return false;
//		验证成功 提交修改
		$this->where("cid={$cid}")->save();
		return true;
	}
//	删除分类，其子级往上提升一级
	public function del($cid){
//		1、查找要删除的分类的pid(就是父级的cid)
		$pid = $this->where("cid={$cid}")->pluck('pid');
//		2、找到被删除的分类的自己，把这些子级的pid变成，要被删除的分类的pid(就是把要被删除的分类的子级往上提升一级)
		$this->where("pid={$cid}")->save(array('pid'=>$pid));
//		3、删除当前分类
		$this->delete($cid);
	}
//	获得除了自身和自身的所有子级(父级不能是自身和自身的所有子级)
	public function getNoMine($cid){
//		1、获得自身和自身的所有子级的cid(是一个一维数组)
		$cids = $this->getSon($this->get(),$cid);
//		压入自身
		$cids[] = $cid;
//		2、查询数据库，条件是查询点击编辑A标签传递的cid，不在cids里面的数据
		$data = $this->where("cid NOT IN(".implode(',', $cids).")")->get();
//		转变成树状结构
		return Data::tree($data,'cname');
	}
//	获取当前分类对应的所有子级
	public function getSon($data,$cid){
//		定义静态变量，找到所有的子级后，放在静态里面不会丢失
		static $temp = array();
//		递归
		foreach($data as $v){
				if($cid==$v['pid']){
	//			把找到的数据的cid放在数组里，在把cid传给自己，
				$temp[] = $v['cid'];
				$this->getSon($data,$v['cid']);
			}
		}
		return $temp;
	}
}



 ?>